1
От игрушечных наборов данных к хаосу реального мира
EvoClass-AI002Lecture 5
00:00

1. Мост между теорией и практикой: основы загрузки данных

Модели глубокого обучения процветают на чистых, последовательных данных, но реальные наборы данных по своей природе неупорядочены. Нам нужно перейти от готовых бенчмарков (например, MNIST) к управлению неструктурированными источниками, где сама загрузка данных — это сложная задача по координации. Основой этого процесса являются специализированные инструменты PyTorch для управления данными.

Основная проблема заключается в преобразовании сырых, разрозненных данных (изображений, текста, аудиофайлов), хранящихся на диске, в хорошо структурированный, стандартизированный формат формат тензоров , ожидаемый графическим процессором. Для этого требуется пользовательская логика для индексирования, загрузки, предварительной обработки и, наконец, батчинга.

Ключевые проблемы при работе с реальными данными

  • Хаос данных: Данные разбросаны по нескольким каталогам, часто индексируются только файлами CSV.
  • Требуется предобработка: Изображения могут требовать изменения размера, нормализации или аугментации перед конвертацией в тензоры.
  • Цель повышения эффективности: Данные должны поступать на графический процессор в оптимизированных, неблокирующих пакетах, чтобы максимально ускорить обучение.
Решение от PyTorch: разделение обязанностей
PyTorch обеспечивает разделение ответственности: класс Dataset отвечает за «что» (как получить один образец и метку), в то время как класс DataLoader отвечает за «как» (эффективный батчинг, перемешивание и многопоточная доставка).
data_pipeline.py
TERMINALbash — data-env
> Ready. Click "Run" to execute.
>
TENSOR INSPECTOR Live

Run code to inspect active tensors
Question 1
What is the primary role of a PyTorch Dataset object?
To organize samples into mini-batches and shuffle them.
To define the logic for retrieving a single, preprocessed sample.
To perform the matrix multiplication inside the model.
Question 2
Which DataLoader parameter enables parallel loading of data using multiple CPU cores?
device_transfer
batch_size
num_workers
async_load
Question 3
If your raw images are all different sizes, which component is primarily responsible for resizing them to a uniform dimension (e.g., $224 \times 224$)?
The DataLoader's collate_fn.
The GPU's dedicated image processor.
The Transformation function applied within the Dataset's __getitem__ method.
Challenge: The Custom Image Loader Blueprint
Define the structure needed for real-world image classification.
You are building a CustomDataset for 10,000 images indexed by a single CSV file containing paths and labels.
Step 1
Which mandatory method must return the total number of samples?
Solution:
The __len__ method.
Concept: Defines the epoch size.
Step 2
What is the correct order of operations inside __getitem__(self, index)?
Solution:
1. Look up file path using index.
2. Load the raw data (e.g., Image).
3. Apply the necessary transforms.
4. Return the processed Tensor and Label.